package conexao;

import java.util.Enumeration;
import java.util.Hashtable;

public class HttpData{

    public static final int NORMAL = 0;
    public static final int ARQUIVO = 1;
    private int tipo;
    private String pagina;
    private String campoArquivo;
    private String nomeArquivo;
    private String tipoArquivo;
    private String urlArquivo;
    private Hashtable parametros;
    private final String boundary = "-----TheAntonioDiego";
    private int id;

    public HttpData() {
        parametros = new Hashtable(1);
        parametros.put("versao", "3.5.3B");
    }

    public void setArquivo(String fileField, String fileName, String fileType, String url) {
        this.campoArquivo = fileField;
        this.nomeArquivo = fileName;
        this.tipoArquivo = fileType;
        this.urlArquivo = url;
        this.tipo = ARQUIVO;
    }

    public byte[] getUrlFormDataBytes() {
        Enumeration e = parametros.keys();

        StringBuffer dados = new StringBuffer(1);

        while (e.hasMoreElements()) {
            String campo = (String) e.nextElement();
            String valor = (String) parametros.get(campo);
            dados.append("&").append(campo);
            dados.append("=");
            dados.append(valor);
        }

        return dados.deleteCharAt(0).toString().getBytes();
    }

    public byte[] getMultipatFormDataBytes() {
        StringBuffer multipart = new StringBuffer(boundary).append("\r\n");

        //Parameros
        Enumeration keys = parametros.keys();
        while (keys.hasMoreElements()) {
            String key = (String) keys.nextElement();
            String value = (String) parametros.get(key);
            multipart.append("Content-Disposition: form-data; name=\"").append(key).append("\"\r\n").append("\r\n").append(value).append("\r\n").append("--").append(boundary).append("\r\n");
        }

        //Arquivo
        multipart.append("Content-Disposition: form-data; name=\"").append(campoArquivo).append("\"; filename=\"").append(nomeArquivo).append("\"\r\n").append("Content-Type: ").append(tipoArquivo).append("\r\n\r\n");

        return multipart.toString().getBytes();
    }

    public String getBoundary() {
        return boundary;
    }

    public String getEndBoundary() {
        return "\r\n--" + boundary + "--\r\n";
    }

    public String getUrlArquivo() {
        return urlArquivo;
    }

    public String getPagina() {
        return pagina;
    }

    public void setPagina(String pagina) {
        this.pagina = pagina;
    }

    public void put(String nome, String valor) {
        parametros.put(nome, valor);
    }

    public String get(String key) {
        return (String) parametros.get(key);
    }

    public int getTipo() {
        return tipo;
    }

    public void setTipo(int tipo) {
        this.tipo = tipo;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
}
